草庐IT

c++ - 实现安全的 nullptr

全部标签

c++ - 使用 native Windows API 的 win32 线程安全队列实现

由于windows缺少条件变量(虽然从vis​​ta开始引入,但windowsXP和2003不支持),用c++实现线程安全的队列不是很容易。StrategiesforImplementingPOSIXConditionVariablesonWin32.我需要的是只使用CriticalSection或Mutex和Event,而不使用信号量和条件变量。我也试图找到一个只使用win32nativeAPI的确切实现,但没有成功。所以我自己完成了一个。问题是我不是100%确定代码是线程安全的。谁能告诉我好不好?classCEventSyncQueue{public:CEventSyncQueue

c++ - 如何知道所使用的微软 C runtime 的版本?

我有一个依赖于MSVCR90.dll的程序,我将它与主要可执行文件一起提供的库包括:ProgramFolder\Main.exeProgramFolder\MSVCR90.dll我想知道是否有新的更新可用(例如修复安全问题),我提供的更新是否优先于System32或SxS.有没有办法以编程方式知道正在使用哪个版本的C运行时? 最佳答案 您可以查看executablesimportheader查找它引用了哪个版本的C运行时。将其从system32目录中删除无济于事,反而会造成崩溃。 关于c

windows - 实现我自己的协议(protocol)并通过我的浏览器使用它

我想创建一个新协议(protocol),以便我可以在浏览器中查看通过该协议(protocol)检索到的数据。例如,我希望能够转到myprotocol://www.filepath.com/img.jpg并查看图像。其中myprotocol是我自己定义的。我在此处阅读了有关注册应用程序处理的信息:http://msdn.microsoft.com/en-us/library/aa767914%28v=vs.85%29.aspx有了这个,就可以运行一个桌面exe来接收我试图访问的url。我如何将检索到的jpg返回给浏览器以供查看,使其表现得像普通协议(protocol),例如http?谢谢

两个线程能否同时读取同一个const内存块

内存块在程序开始时被初始化和设置并且没有改变(CONST)。例如:静态常量inta=10;如果它依赖于环境/架构,那么这些设置是否安全:英特尔/AMDWin/Linux32/64位每个核心的线程或一个核心的所有线程。 最佳答案 对于所有架构读取const都是安全的 关于两个线程能否同时读取同一个const内存块,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12337926/

c++ - 通过批处理文件在多个文件上添加标题

我有一个.c文件列表,我想在其中添加标题。这些文件位于一个文件夹中,批处理文件应该为该文件夹中的每个.c文件放置一个标题。我很想知道,我们如何才能做到这一点。我想插入的标题示例如下://///////////////////////////////////////////////////////////////////////////Name:TomVolvoRiddleRollNo:56/BS/352////////////////////////////////////////////////////////////////////////////谢谢,

windows - http.sys 实现

我们都知道在我们的Windows中有一个名为http.sys内核模式驱动程序的二进制文件,它可以为我们处理HTTP。这基本上就是我们对它的了解。但今天我想:嘿,我们所有的网络东西,如TCP/IP和诸如此类的东西都在这里,在用户区——ws2_32.dll的提供者(在mswsock.dll中)和它的所有friend。由于存在用户态组件,因此http.sys无法使用它们。问题是:他们是怎么做到的?任何信息链接将不胜感激。 最佳答案 我会想象HTTP.SYS使用WindowsKernelSockets以实现其目标。参见here

c++ - 如何以编程方式确定网卡是虚拟网卡?

在HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/CurrentVersion/NetworkCards/下,我可以枚举我机器上安装的每个网卡。但是有些应用,尤其是虚拟机,会安装一些虚拟网卡。我的问题是:如何以编程方式确定网卡是虚拟网卡? 最佳答案 取决于虚拟机。如果它使用例如QEMU作为硬件仿真,将很难确定它不是“真实的东西”——充其量,你可能会注意到它比真实的东西应该更快,但你很难被插入知道这一点。当然,虚拟机也可能在虚拟机中安装了真实的网卡。所以你不能真正确定它是不是真实的,即使

使用 cygwin 在 Windows 上编译 libjpeg?

在Windows机器上编译libjpeg的最佳方法是什么?我应该使用MicrosoftVisualStudio还是可以使用其他软件(如Cygwin)?注意:当我使用Cygwin并将makefile.vc复制到Makefile时,将jconfig.vc复制到jconfig.h并运行此示例代码:http://www.cim.mcgill.ca/~junaed/code/libjpeg_sample.tar.gz然后编译器产生以下错误:$gccmain.cC:\cygwin\tmp\ccwChyeY.o:main.c:(.text+0x5a):undefinedreferenceto`jpe

c - HMAC-MD5 与 CryptoApi

我已经采用了SHA1HMACexample来自微软的网站并根据这个stack-overflowpost进行了修改以及Internet上的其他一些建议,但是我无法生成正确的值。基本上我只是将SHA1替换为MD5CALG_SHA1->CALG_MD5。有人有工作示例吗?密码的CryptDeriveKey()使用什么算法(RC2或RC4)重要吗?谢谢!编辑:找到工作代码here 最佳答案 您的值与示例不同,因为您使用了不同的键:可以使用Linux获取示例值openssldgst-md5-hmackey命令。如果该命令的长度小于MD5哈希b

java - Windows cmd通信的实现方法——多条命令

我试图找到一个解决方案,如何实现多命令-与Windowscmdshell的响应交互。示例:启动cmdshell“目录”等待并处理输入根据输入的内容执行新命令等待并处理输入等等请注意!上面的步骤只是描述通信方式,我并不是要浏览文件系统,即实际命令可能是其他的。到目前为止的方法:try{Runtimert=Runtime.getRuntime();p=rt.exec("cmd");error=p.getErrorStream();input=p.getInputStream();output=newPrintStream(p.getOutputStream());StreamGobbler